package com.gopay.common.util.security;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 剩余信息保护工具类
 * @RemainInfoProtectUtil.java
 * @author fanghw
 * @2016年11月3日 上午9:54:55  www.gopay.com.cn Inc.All rights reserved.
 */
public class RemainInfoProtectUtil {

    /**
     * 安全的清空内存中的密码
     * @param password
     */
    public static void clearPasswordInMemorySafely(StringBuilder password){
        if(password==null) {
            return;
        }
        
        try{
            //强制清空内存中的密码
            password.delete(0, password.length());  
        }finally{
            //让JVM回收该对象,增加双保险
            password=null;
        }
    }
    
    /**
     * 安全的删除硬盘中的文件
     * @param file
     */
    public static void deleteFileInDiskSafely(File file){
        FileWriter writer=null;
        try{
            if (file.exists()){
                //删除前先清空文件内容                
                writer = new FileWriter(file, false);//append设置为false，则以覆盖的方式写入     
                writer.write("");  
                writer.flush();
                writer.close();
            }
           
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                //关闭writer
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            if (file.exists()){
                //删除文件
                file.delete();
            }            
        }
    }
    
    
    public static void main(String[] args){
        StringBuilder pwd=new StringBuilder("haha123");
        RemainInfoProtectUtil.clearPasswordInMemorySafely(pwd);        
        System.out.println("pwd="+pwd.toString());
        
        
        RemainInfoProtectUtil.deleteFileInDiskSafely(new File("C:\\logs\\1.jpg"));
        
    }
    
}
